gl renderer: Add debug function to dump render node
authorTimm Bäder <mail@baedert.org>
Sun, 24 Feb 2019 08:09:02 +0000 (09:09 +0100)
committerTimm Bäder <mail@baedert.org>
Mon, 25 Feb 2019 07:46:27 +0000 (08:46 +0100)
gsk/gl/gskglrenderer.c

index 41289534304c12d7651b599075fde040b134cf45..4033e42052c129a5bc83bef77f7fd4010636a7f5 100644 (file)
@@ -141,6 +141,30 @@ dump_framebuffer (const char *filename, int w, int h)
   g_free (data);
 }
 
+static void G_GNUC_UNUSED
+dump_node (GskRenderNode *node,
+           const char    *filename)
+{
+  const int surface_width = ceilf (node->bounds.size.width);
+  const int surface_height = ceilf (node->bounds.size.height);
+  cairo_surface_t *surface;
+  cairo_t *cr;
+
+  surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
+                                        surface_width,
+                                        surface_height);
+
+  cr = cairo_create (surface);
+  cairo_save (cr);
+  cairo_translate (cr, -node->bounds.origin.x, -node->bounds.origin.y);
+  gsk_render_node_draw (node, cr);
+  cairo_restore (cr);
+  cairo_destroy (cr);
+
+  cairo_surface_write_to_png (surface, filename);
+  cairo_surface_destroy (surface);
+}
+
 static gboolean
 font_has_color_glyphs (const PangoFont *font)
 {